Next.js ๋ผ์ฐํธ ๊ทธ๋ฃน์ ์ฌ์ฉํ์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๊น๋ํ๊ณ ์ฒด๊ณ์ ์ด๋ฉฐ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด URL ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ์ธ์. SEO์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ํด ๋ผ์ฐํ ์ ์ต์ ํํ์ธ์.
Next.js ๋ผ์ฐํธ ๊ทธ๋ฃน: URL ๊ตฌ์กฐ์ ๊ตฌ์ฑ ๋ง์คํฐํ๊ธฐ
Next.js๋ ๊ฐ๋ฐ์๋ค์ด ๊ณ ์ฑ๋ฅ์ SEO ์นํ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๊ฒ ํด์ฃผ๋ ๊ฐ๋ ฅํ React ํ๋ ์์ํฌ์ ๋๋ค. ํต์ฌ ๊ธฐ๋ฅ ์ค ํ๋๋ ํ์ผ ์์คํ ๋ผ์ฐํ ์ผ๋ก, ํ์ผ๊ณผ ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ผ์ฐํธ๋ฅผ ์ ์ํ ์ ์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ง๊ด์ ์ด์ง๋ง, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ํ๋ก์ ํธ ๊ตฌ์กฐ๊ฐ ๋ณต์กํด์ง๊ณ ์ ๋๋์ง ์์ ์ ์์ต๋๋ค. ๋ฐ๋ก ์ด๋ ๋ผ์ฐํธ ๊ทธ๋ฃน(Route Groups)์ด ํ์ํฉ๋๋ค.
Next.js 13์์ ๋์ ๋ ๋ผ์ฐํธ ๊ทธ๋ฃน์ URL ๊ตฌ์กฐ์ ์ํฅ์ ์ฃผ์ง ์์ผ๋ฉด์ ๋ผ์ฐํธ๋ฅผ ๊ตฌ์ฑํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ด๋ จ๋ ๋ผ์ฐํธ๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ํจ๊ป ๊ทธ๋ฃนํํ์ฌ URL์ ์ถ๊ฐ์ ์ธ ๊ฒฝ๋ก ์ธ๊ทธ๋จผํธ๋ฅผ ๋์ ํ์ง ์๊ณ ๋ ์ฝ๋ ๊ตฌ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ด๋ ํนํ ์ฌ์ฉ์ ๊ฒฝํ(UX)๊ณผ ๊ฒ์ ์์ง ์ต์ ํ(SEO) ๋ชจ๋์ ์์ด ๊น๋ํ URL ๊ตฌ์กฐ๋ฅผ ์ ์งํ๋ ๊ฒ์ด ์ค์ํ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฉํฉ๋๋ค.
Next.js ๋ผ์ฐํธ ๊ทธ๋ฃน์ด๋ ๋ฌด์์ธ๊ฐ์?
๋ผ์ฐํธ ๊ทธ๋ฃน์ Next.js์์ ์ถ๊ฐ์ ์ธ URL ์ธ๊ทธ๋จผํธ๋ฅผ ์์ฑํ์ง ์๊ณ ๋ผ์ฐํธ๋ฅผ ๊ตฌ์ฑํ ์ ์๊ฒ ํด์ฃผ๋ ํด๋ ๊ธฐ๋ฐ์ ๊ท์น์
๋๋ค. ๋๋ ํฐ๋ฆฌ ์ด๋ฆ์ ๊ดํธ๋ก ๋ฌถ์ด ์ ์ํฉ๋๋ค(์: (group-name)
). ๊ดํธ๋ Next.js์๊ฒ ์ด ํด๋๊ฐ ์ค์ URL ๊ฒฝ๋ก์ ์ผ๋ถ๊ฐ ์๋๋ผ ๋
ผ๋ฆฌ์ ์ธ ๊ทธ๋ฃน์ผ๋ก ์ฒ๋ฆฌ๋์ด์ผ ํจ์ ๋ํ๋
๋๋ค.
์๋ฅผ ๋ค์ด, ๋ค์ํ ์นดํ ๊ณ ๋ฆฌ(๊ธฐ์ , ์ฌํ, ์์ ๋ฑ)์ ๊ฒ์๋ฌผ์ด ์๋ ๋ธ๋ก๊ทธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ค๋ฉด, ๋ผ์ฐํธ ๊ทธ๋ฃน์ ์ฌ์ฉํ์ฌ URL ๊ตฌ์กฐ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ๊ฐ ์นดํ ๊ณ ๋ฆฌ์ ํ์ผ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๋ผ์ฐํธ ๊ทธ๋ฃน ์ฌ์ฉ์ ์ด์
๋ผ์ฐํธ ๊ทธ๋ฃน์ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ด ์์ต๋๋ค:
- ๊ฐ์ ๋ ์ฝ๋ ๊ตฌ์ฑ: ๋ผ์ฐํธ ๊ทธ๋ฃน์ ํ๋ก์ ํธ๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ตฌ์กฐํํ์ฌ ํ์ํ๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค. ๊ด๋ จ๋ ๋ผ์ฐํธ๋ฅผ ํจ๊ป ๊ทธ๋ฃนํํจ์ผ๋ก์จ ํ์ํ ํ์ผ์ ์ ์ํ๊ฒ ์ฐพ์ ์์ ํ ์ ์์ต๋๋ค.
- ๋ ๊น๋ํ URL ๊ตฌ์กฐ: ๋ผ์ฐํธ ๊ทธ๋ฃน์ ์ฌ์ฉํ๋ฉด ์ฝ๋ ๊ตฌ์ฑ์ ํฌ์ํ์ง ์๊ณ ๋ ๊น๋ํ๊ณ ์ฌ์ฉ์ ์นํ์ ์ธ URL ๊ตฌ์กฐ๋ฅผ ์ ์งํ ์ ์์ต๋๋ค. ์ด๋ SEO์ ์ฌ์ฉ์ ๊ฒฝํ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ํฅ์๋ ์ ์ง๋ณด์์ฑ: ์ ๊ตฌ์ฑ๋ ์ฝ๋๋ฒ ์ด์ค๋ ์ ์ง๋ณด์ํ๊ณ ์ ๋ฐ์ดํธํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค. ๋ผ์ฐํธ ๊ทธ๋ฃน์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐ๋ฅผ ๋ ์ฝ๊ฒ ์ดํดํ๊ฒ ํ์ฌ ๊ฐ๋ฐ ์ค ์ค๋ฅ ๋ฐ์ ์ํ์ ์ค์ ๋๋ค.
- ํ์ฅ์ฑ: ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฑ์ฅํจ์ ๋ฐ๋ผ ๋ผ์ฐํธ ๊ทธ๋ฃน์ ์ฝ๋๋ฒ ์ด์ค์ ์ฆ๊ฐํ๋ ๋ณต์ก์ฑ์ ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋ผ์ฐํธ ๊ตฌ์ฑ์ ์ํ ํ์ฅ ๊ฐ๋ฅํ ์๋ฃจ์ ์ ์ ๊ณตํ์ฌ ์๊ฐ์ด ์ง๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๋ฆฌํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ๊ด๋ จ ์ฝ๋์ ๊ณต๋ ๋ฐฐ์น(Colocation): ๋ผ์ฐํธ ๊ทธ๋ฃน์ ์ปดํฌ๋ํธ, ํ ์คํธ ๋ฐ ๊ธฐํ ๊ด๋ จ ํ์ผ๋ค์ ๋ ์ฝ๊ฒ ๊ณต๋ ๋ฐฐ์นํ ์ ์๊ฒ ํ์ฌ ๊ฐ๋ฐ์ ๊ฒฝํ์ ํฅ์์ํต๋๋ค.
Next.js์์ ๋ผ์ฐํธ ๊ทธ๋ฃน์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ
Next.js์์ ๋ผ์ฐํธ ๊ทธ๋ฃน์ ๊ตฌํํ๋ ๊ฒ์ ๊ฐ๋จํฉ๋๋ค. ๋ค์์ ๋จ๊ณ๋ณ ๊ฐ์ด๋์ ๋๋ค:
- ์ ๋๋ ํฐ๋ฆฌ ์์ฑ:
app
๋๋ ํฐ๋ฆฌ(๋๋ ์ด์ pages
๋ผ์ฐํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐpages
๋๋ ํฐ๋ฆฌ)์ ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ๋๋ ํฐ๋ฆฌ ์ด๋ฆ์ ๊ดํธ๋ก ๋ฌถ์ต๋๋ค. ์:(blog)
,(admin)
, ๋๋(marketing)
. - ๋ผ์ฐํธ ํ์ผ ๋ฐฐ์น: ๋ผ์ฐํธ ํ์ผ(์:
page.js
,layout.js
)์ ๋ผ์ฐํธ ๊ทธ๋ฃน ๋๋ ํฐ๋ฆฌ ์์ ๋ฐฐ์นํฉ๋๋ค. ์ด ํ์ผ๋ค์ ํด๋น ๊ทธ๋ฃน์ ๋ผ์ฐํธ๋ฅผ ์ ์ํฉ๋๋ค. - ๋ผ์ฐํธ ์ ์: ํ์ผ ์์คํ ๋ผ์ฐํ ๊ท์น์ ์ฌ์ฉํ์ฌ Next.js์์ ํ์์ ๊ฐ์ด ๋ผ์ฐํธ๋ฅผ ์ ์ํฉ๋๋ค.
์์: ๋ผ์ฐํธ ๊ทธ๋ฃน์ ์ฌ์ฉํ ๋ธ๋ก๊ทธ ์ ํ๋ฆฌ์ผ์ด์
๊ธฐ์ , ์ฌํ, ์์ ์นดํ ๊ณ ๋ฆฌ๊ฐ ์๋ ๋ธ๋ก๊ทธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๋ผ์ฐํธ ๊ทธ๋ฃน์ ์ฌ์ฉํ์ฌ ๊ฐ ์นดํ ๊ณ ๋ฆฌ์ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํ ์ ์์ต๋๋ค:
app/
(technology)/
page.js // /technology
[slug]/page.js // /technology/[slug]
(travel)/
page.js // /travel
[slug]/page.js // /travel/[slug]
(food)/
page.js // /food
[slug]/page.js // /food/[slug]
page.js // /
์ด ์์์์ ๊ฐ ์นดํ ๊ณ ๋ฆฌ(๊ธฐ์ , ์ฌํ, ์์)๋ ๋ผ์ฐํธ ๊ทธ๋ฃน์ ๋๋ค. ๊ฐ ๋ผ์ฐํธ ๊ทธ๋ฃน ๋ด์ ํ์ผ๋ค์ ํด๋น ์นดํ ๊ณ ๋ฆฌ์ ๋ผ์ฐํธ๋ฅผ ์ ์ํฉ๋๋ค. ์ถ๊ฐ์ ์ธ ๊ตฌ์ฑ์๋ ๋ถ๊ตฌํ๊ณ URL ๊ตฌ์กฐ๋ ๊น๋ํ๊ณ ์ง๊ด์ ์ผ๋ก ์ ์ง๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๊ณ ๊ธ ๋ผ์ฐํธ ๊ทธ๋ฃน ๊ธฐ๋ฒ
๋ผ์ฐํธ ๊ทธ๋ฃน์ Next.js ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ๋ณต์กํ ์กฐ์ง ๊ตฌ์กฐ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๊ฒฐํฉํ๊ณ ์ค์ฒฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ผ์ฐํธ ๊ตฌ์ฑ ๋ฐ ๋ชจ๋์ฑ์ ๋ํ ์ธ๋ฐํ ์ ์ด๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
์ค์ฒฉ๋ ๋ผ์ฐํธ ๊ทธ๋ฃน
๋ผ์ฐํธ ๊ทธ๋ฃน์ ์๋ก ์ค์ฒฉํ์ฌ ๊ณ์ธต์ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ ์ฌ๋ฌ ์์ค์ ๋ถ๋ฅ๊ฐ ์๋ ํฌ๊ณ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๋ ๋ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
app/
(admin)/
(users)/
page.js // /admin/users
[id]/page.js // /admin/users/[id]
(products)/
page.js // /admin/products
[id]/page.js // /admin/products/[id]
์ด ์์์์ (admin)
๋ผ์ฐํธ ๊ทธ๋ฃน์ ๋ ๊ฐ์ ์ค์ฒฉ๋ ๋ผ์ฐํธ ๊ทธ๋ฃน, ์ฆ (users)
์ (products)
๋ฅผ ํฌํจํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ด๋ฆฌ์ ํจ๋์ ๊ฐ ์น์
์ ๋ํ ํ์ผ์ ๊ฐ๋ณ์ ์ผ๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๋ผ์ฐํธ ๊ทธ๋ฃน๊ณผ ์ผ๋ฐ ๋ผ์ฐํธ ๊ฒฐํฉํ๊ธฐ
๋ผ์ฐํธ ๊ทธ๋ฃน์ ์ผ๋ฐ ๋ผ์ฐํธ์ ๊ฒฐํฉํ์ฌ ์ ์ฐํ ๋ผ์ฐํ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฒด๊ณ์ ์ผ๋ก ๊ตฌ์ฑ๋ ์น์ ๊ณผ ๋ ๋ฆฝ์ ์ธ ํ์ด์ง๋ฅผ ํผํฉํ ์ ์์ต๋๋ค.
app/
(blog)/
page.js // /blog
[slug]/page.js // /blog/[slug]
about/page.js // /about
contact/page.js // /contact
์ด ์์์์ (blog)
๋ผ์ฐํธ ๊ทธ๋ฃน์ ๋ธ๋ก๊ทธ ์น์
์ ๋ผ์ฐํธ๋ฅผ ํฌํจํ๊ณ , about
๋ฐ contact
๋๋ ํฐ๋ฆฌ๋ ๋
๋ฆฝ์ ์ธ ํ์ด์ง๋ฅผ ์ ์ํฉ๋๋ค.
๋ผ์ฐํธ ๊ทธ๋ฃน ๊ณ ๋ ค์ฌํญ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก
๋ผ์ฐํธ ๊ทธ๋ฃน์ Next.js ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ด์ง๋ง ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ค์์ ์ ๋ ํด์ผ ํ ๋ช ๊ฐ์ง ๊ณ ๋ ค์ฌํญ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก์ ๋๋ค:
- ๋ผ์ฐํธ ๊ทธ๋ฃน ๋จ์ฉ ๊ธ์ง: ๋ผ์ฐํธ ๊ทธ๋ฃน์ ํ๋ก์ ํธ ๊ตฌ์ฑ์ ๊ฐ์น๋ฅผ ๋ํ ๋ ์ฌ์ฉํ์ธ์. ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ฉด ํ๋ก์ ํธ ๊ตฌ์กฐ๊ฐ ํ์ ์ด์์ผ๋ก ๋ณต์กํด์ง ์ ์์ต๋๋ค.
- ์๋ฏธ ์๋ ์ด๋ฆ ์ ํ: ๋ผ์ฐํธ ๊ทธ๋ฃน์ ๋ช ํํ๊ณ ์ค๋ช ์ ์ธ ์ด๋ฆ์ ์ฌ์ฉํ์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ๊ฐ ๊ทธ๋ฃน์ ๋ชฉ์ ์ ๋ ์ฝ๊ฒ ์ดํดํ ์ ์์ต๋๋ค.
- ์ผ๊ด๋ ๊ตฌ์กฐ ์ ์ง: ํ๋ก์ ํธ ์ ์ฒด์ ๊ฑธ์ณ ์ผ๊ด๋ ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฅด์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ํ์ํ๊ณ ์ ์ง๋ณด์ํ๊ธฐ๊ฐ ๋ ์ฌ์์ง๋๋ค.
- ๊ตฌ์กฐ ๋ฌธ์ํ: ๊ฐ ๋ผ์ฐํธ ๊ทธ๋ฃน์ ๋ชฉ์ ์ ํฌํจํ์ฌ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ๋ฌธ์ํํ์ธ์. ์ด๋ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋ค์ด์ด๊ทธ๋จ ์์ฑ๊ธฐ์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ผ์ฐํธ ๊ตฌ์กฐ๋ฅผ ์๊ฐํํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์ธ์.
- SEO์ ๋ฏธ์น๋ ์ํฅ ๊ณ ๋ ค: ๋ผ์ฐํธ ๊ทธ๋ฃน์ URL ๊ตฌ์กฐ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น์ง ์์ง๋ง, ์ ๋ฐ์ ์ธ ๋ผ์ฐํ ์ ๋ต์ด SEO์ ๋ฏธ์น๋ ์ํฅ์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ค๋ช ์ ์ธ URL์ ์ฌ์ฉํ๊ณ ๊ฒ์ ์์ง์ ๋ง๊ฒ ์ฝํ ์ธ ๋ฅผ ์ต์ ํํ์ธ์.
์ฌ์ฉ ์ฌ๋ก ๋ฐ ์ค์ ์์
๋ผ์ฐํธ ๊ทธ๋ฃน์ ๋ค์ํ ์๋๋ฆฌ์ค์ ์ ์ฉํ ์ ์์ต๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ์ค์ ์์์ ๋๋ค:
- ์ ์์๊ฑฐ๋ ์ ํ๋ฆฌ์ผ์ด์
: ๋ผ์ฐํธ ๊ทธ๋ฃน์ ์ฌ์ฉํ์ฌ ์ ํ ์นดํ
๊ณ ๋ฆฌ, ์ฌ์ฉ์ ๊ณ์ ๋ฐ ๊ฒฐ์ ํ๋ฆ์ ๊ตฌ์ฑํฉ๋๋ค. ์:
(products)/shoes/page.js
,(products)/shirts/page.js
,(account)/profile/page.js
,(account)/orders/page.js
. ์ด๋app
๋๋ ํฐ๋ฆฌ์ ๊ตฌ์ฑ์ ํฌ๊ฒ ๊ฐ์ ํ ์ ์์ต๋๋ค. - ๋์๋ณด๋ ์ ํ๋ฆฌ์ผ์ด์
: ๋ถ์, ์ค์ , ์ฌ์ฉ์ ๊ด๋ฆฌ ๋ฑ ๋์๋ณด๋์ ๋ค์ํ ์น์
์ ๊ทธ๋ฃนํํฉ๋๋ค. ์:
(dashboard)/analytics/page.js
,(dashboard)/settings/page.js
,(dashboard)/users/page.js
. - ์ฝํ
์ธ ๊ด๋ฆฌ ์์คํ
(CMS): ๋ผ์ฐํธ ๊ทธ๋ฃน์ ์ฌ์ฉํ์ฌ ๊ธฐ์ฌ, ํ์ด์ง, ๋ฏธ๋์ด์ ๊ฐ์ ์ฝํ
์ธ ์ ํ์ ๊ตฌ์ฑํฉ๋๋ค. ์:
(content)/articles/page.js
,(content)/pages/page.js
,(content)/media/page.js
. - ๊ตญ์ ํ๋ ์ ํ๋ฆฌ์ผ์ด์
: ๋ผ์ฐํธ ๊ทธ๋ฃน์ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๋ก์ผ์ผ์ ๋ํ ์ฝํ
์ธ ๋ฅผ ๊ตฌ์ฑํ ์ ์์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ์ด ๋ชฉ์ ์๋ Next.js ๋ฏธ๋ค์จ์ด์ ๊ตญ์ ํ(i18n) ๊ธฐ๋ฅ์ด ๋ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ก์ผ์ผ๋ณ ์ปดํฌ๋ํธ๋ ๋ ์ด์์์ด ์๋ ๊ฒฝ์ฐ, ๊ฐ์์ผ๋ก ๋ผ์ฐํธ ๊ทธ๋ฃน์ผ๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค:
(en)/page.js
,(es)/page.js
. ์ ์ฉ i18n ์๋ฃจ์ ๊ณผ ๋น๊ตํ์ฌ ์ด ์๋๋ฆฌ์ค์์ ๋ผ์ฐํธ ๊ทธ๋ฃน์ ์ฌ์ฉํ ๋์ ์ ์ฌ์ ์ธ ๋ณต์ก์ฑ์ ์ผ๋์ ๋์ธ์.
๋ผ์ฐํธ ๊ทธ๋ฃน๊ณผ ๋ค๋ฅธ Next.js ๋ผ์ฐํ ๊ธฐ๋ฅ ๋น๊ต
Next.js๋ ๋ผ์ฐํธ ๊ทธ๋ฃน๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์๋ ์ฌ๋ฌ ๋ค๋ฅธ ๋ผ์ฐํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ํน์ ์๊ตฌ์ ๊ฐ์ฅ ์ ํฉํ ์ ๊ทผ ๋ฐฉ์์ ์ ํํ๋ ค๋ฉด ์ด๋ฌํ ๊ธฐ๋ฅ ๊ฐ์ ์ฐจ์ด์ ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๋ณ๋ ฌ ๋ผ์ฐํธ (Parallel Routes)
๋ณ๋ ฌ ๋ผ์ฐํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ผํ ๋ ์ด์์ ๋ด์์ ์ฌ๋ฌ ํ์ด์ง๋ฅผ ๋์์ ๋ ๋๋งํ ์ ์์ต๋๋ค. ํ์ผ ๊ตฌ์ฑ์๋ง ์ํฅ์ ๋ฏธ์น๋ ๋ผ์ฐํธ ๊ทธ๋ฃน๊ณผ ๋ฌ๋ฆฌ, ๋ณ๋ ฌ ๋ผ์ฐํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ ์ด์์๊ณผ ๊ตฌ์กฐ๋ฅผ ์์ ํฉ๋๋ค. ํจ๊ป ์ฌ์ฉํ ์ ์์ง๋ง, ์๋ก ๋ค๋ฅธ ๋ชฉ์ ์ ๊ฐ์ง๋๋ค.
์ธํฐ์ ์ ๋ผ์ฐํธ (Interception Routes)
์ธํฐ์ ์ ๋ผ์ฐํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ผ์ฐํธ๋ฅผ ๊ฐ๋ก์ฑ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ ์ ์์ต๋๋ค. ์ธํฐ์ ์ ๋ผ์ฐํธ๋ ๋ชจ๋ฌ ๊ตฌํ์ด๋ ๋ณต์กํ ๋ผ์ฐํธ๋ก ์ด๋ํ ๋ ๋ ์ฌ์ฉ์ ์นํ์ ์ธ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐ ํ์ํฉ๋๋ค. ๋ผ์ฐํธ ๊ทธ๋ฃน์ฒ๋ผ ํ์ผ ์์คํ ๊ตฌ์ฑ์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค.
๋ ์ด์์ (Layouts)
๋ ์ด์์์ ํ์ด์ง๋ฅผ ๊ฐ์ธ๊ณ ์ฌ๋ฌ ๋ผ์ฐํธ์ ๊ฑธ์ณ ์ผ๊ด๋ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ UI ์ปดํฌ๋ํธ์ ๋๋ค. ๋ ์ด์์์ ์ผ๋ฐ์ ์ผ๋ก ๋ผ์ฐํธ ๊ทธ๋ฃน ๋ด์ ์ ์๋๋ฉฐ ์ค์ฒฉ๋ ์ ์์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
๋ผ์ฐํธ ๊ทธ๋ฃน์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ธฐ
๊ธฐ์กด Next.js ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ ๊ฒฝ์ฐ, ๋ผ์ฐํธ ๊ทธ๋ฃน์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ ๋น๊ต์ ๊ฐ๋จํ ๊ณผ์ ์ ๋๋ค. ๊ด๋ จ๋ ๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๊ทธ๋ฃนํํ ๋ผ์ฐํธ ์๋ณ: ๊ธฐ๋ฅ์ด๋ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ํจ๊ป ๊ทธ๋ฃนํํ ๋ผ์ฐํธ๋ฅผ ์๋ณํฉ๋๋ค.
- ๋ผ์ฐํธ ๊ทธ๋ฃน ๋๋ ํฐ๋ฆฌ ์์ฑ: ๊ฐ ๋ผ์ฐํธ ๊ทธ๋ฃน์ ๋ํ ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ๋๋ ํฐ๋ฆฌ ์ด๋ฆ์ ๊ดํธ๋ก ๋ฌถ์ต๋๋ค.
- ๋ผ์ฐํธ ํ์ผ ์ด๋: ๋ผ์ฐํธ ํ์ผ์ ์ ์ ํ ๋ผ์ฐํธ ๊ทธ๋ฃน ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ: ๋ชจ๋ ๋ผ์ฐํธ๊ฐ ์์๋๋ก ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒ ์ ํ ํ ์คํธํฉ๋๋ค.
- ๋งํฌ ์
๋ฐ์ดํธ: ํ๋์ฝ๋ฉ๋ ๋งํฌ๊ฐ ์๋ ๊ฒฝ์ฐ, ์๋ก์ด ๋ผ์ฐํธ ๊ตฌ์กฐ๋ฅผ ๋ฐ์ํ๋๋ก ์
๋ฐ์ดํธํฉ๋๋ค(์ด์์ ์ผ๋ก๋ ๋ณ๊ฒฝ ์ฌํญ์ ์๋์ผ๋ก ์ฒ๋ฆฌํ๋
Link
์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค).
์ผ๋ฐ์ ์ธ ๋ฌธ์ ํด๊ฒฐ
๋ผ์ฐํธ ๊ทธ๋ฃน์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ฝ์ง๋ง, ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ๋ฌธ์ ์ ์ง๋ฉดํ ์ ์์ต๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ๋ฌธ์ ํด๊ฒฐ ํ์ ๋๋ค:
- ๋ผ์ฐํธ๋ฅผ ์ฐพ์ ์ ์์: "404 Not Found" ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ, ๋ผ์ฐํธ ํ์ผ์ด ์ฌ๋ฐ๋ฅธ ์์น์ ์๋์ง, ๋๋ ํฐ๋ฆฌ ์ด๋ฆ์ด ๊ดํธ๋ก ๋ฌถ์ฌ ์๋์ง ๋ค์ ํ์ธํ์ธ์.
- ์์์น ๋ชปํ URL ๊ตฌ์กฐ: ์์์น ๋ชปํ URL ๊ตฌ์กฐ๊ฐ ํ์๋๋ ๊ฒฝ์ฐ, ์ค์๋ก URL ๊ฒฝ๋ก์ ๋ผ์ฐํธ ๊ทธ๋ฃน ๋๋ ํฐ๋ฆฌ ์ด๋ฆ์ ํฌํจํ์ง ์์๋์ง ํ์ธํ์ธ์. ๋ผ์ฐํธ ๊ทธ๋ฃน์ ๊ตฌ์ฑ์ฉ์ผ ๋ฟ URL์๋ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค๋ ์ ์ ๊ธฐ์ตํ์ธ์.
- ๋ผ์ฐํธ ์ถฉ๋: ์ถฉ๋ํ๋ ๋ผ์ฐํธ๊ฐ ์๋ ๊ฒฝ์ฐ, Next.js๊ฐ ์ด๋ค ๋ผ์ฐํธ๋ฅผ ์ฌ์ฉํด์ผ ํ ์ง ๊ฒฐ์ ํ์ง ๋ชปํ ์ ์์ต๋๋ค. ๋ผ์ฐํธ๊ฐ ๊ณ ์ ํ๊ณ ๊ฒน์น๋ ๋ถ๋ถ์ด ์๋์ง ํ์ธํ์ธ์.
Next.js ๋ผ์ฐํ ์ ๋ฏธ๋
Next.js๋ ๋์์์ด ์งํํ๊ณ ์์ผ๋ฉฐ, ๋ผ์ฐํ ์์คํ ๋ ์์ธ๋ ์๋๋๋ค. ํฅํ Next.js ๋ฒ์ ์์๋ ๋ผ์ฐํ ์์คํ ์ ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ์ฌํญ์ด ๋์ ๋์ด ๋์ฑ ๊ฐ๋ ฅํ๊ณ ์ ์ฐํด์ง ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฐ์ ์ฌํญ์ ํ์ฉํ๋ ค๋ฉด ์ต์ Next.js ๋ฆด๋ฆฌ์ค๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๊ฒฐ๋ก
Next.js ๋ผ์ฐํธ ๊ทธ๋ฃน์ ์ ํ๋ฆฌ์ผ์ด์ ์ URL ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ฑํ๊ณ ์ฝ๋ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค๋ ๋ฐ ์ ์ฉํ ๋๊ตฌ์ ๋๋ค. ๊ด๋ จ๋ ๋ผ์ฐํธ๋ฅผ ํจ๊ป ๊ทธ๋ฃนํํจ์ผ๋ก์จ ํ์ํ๊ณ ์ ๋ฐ์ดํธํ๊ธฐ ์ฌ์ด ๋ ๊น๋ํ๊ณ ์ฒด๊ณ์ ์ธ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์์ ๊ฐ์ธ ๋ธ๋ก๊ทธ๋ฅผ ๊ตฌ์ถํ๋ ๋๊ท๋ชจ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ , ๋ผ์ฐํธ ๊ทธ๋ฃน์ ๋ผ์ฐํ ์์คํ ์ ๋ณต์ก์ฑ์ ๊ด๋ฆฌํ๊ณ ํ๋ก์ ํธ์ ์ ๋ฐ์ ์ธ ํ์ง์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ๋ผ์ฐํธ ๊ทธ๋ฃน์ ํจ๊ณผ์ ์ผ๋ก ์ดํดํ๊ณ ์ ์ฉํ๋ ๊ฒ์ ๋ชจ๋ ์ง์งํ Next.js ๊ฐ๋ฐ์์๊ฒ ํ์์ ์ ๋๋ค.
์ด ๊ธ์์ ์ค๋ช ํ ์ง์นจ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ฉด ๋ผ์ฐํธ ๊ทธ๋ฃน์ ํ์ ํ์ฉํ์ฌ ์ ๊ตฌ์ฑ๋๊ณ ์ ์ง๋ณด์ ๊ฐ๋ฅํ Next.js ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค. ์๋ฏธ ์๋ ์ด๋ฆ์ ์ ํํ๊ณ , ์ผ๊ด๋ ๊ตฌ์กฐ๋ฅผ ์ ์งํ๋ฉฐ, ํ๋ก์ ํธ์ ๋ผ์ฐํ ์ ๋ต์ ๋ฌธ์ํํ๋ ๊ฒ์ ์์ง ๋ง์ธ์. ๋ผ์ฐํธ ๊ทธ๋ฃน์ ํตํด Next.js ๊ฐ๋ฐ ๊ธฐ์ ์ ํ ๋จ๊ณ ๋ ๋์ด์ฌ๋ฆด ์ ์์ต๋๋ค.